Spring Cloud এর জন্য প্রয়োজনীয় ডিপেন্ডেন্সি এবং কনফিগারেশন

Spring Cloud Setup এবং কনফিগারেশন - স্প্রিং ক্লাউড (Spring Cloud) - Java Technologies

301

স্প্রিং ক্লাউড (Spring Cloud) ব্যবহার করতে হলে নির্দিষ্ট কিছু ডিপেন্ডেন্সি এবং কনফিগারেশন সেটআপ করতে হয়, যা আপনার স্প্রিং বুট অ্যাপ্লিকেশনকে মাইক্রোসার্ভিস আর্কিটেকচার ব্যবস্থাপনায় সহায়তা করবে। স্প্রিং ক্লাউড এর বিভিন্ন কম্পোনেন্ট এবং তাদের কনফিগারেশন বিভিন্ন মাইক্রোসার্ভিস এর জন্য গুরুত্বপূর্ণ। নিচে স্প্রিং ক্লাউডের সাধারণ ডিপেন্ডেন্সি এবং কনফিগারেশন দেখানো হলো।


১. Spring Cloud Config

কাজ: কেন্দ্রীভূত কনফিগারেশন ম্যানেজমেন্ট

ডিপেন্ডেন্সি:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

কনফিগারেশন (application.yml):

spring:
  cloud:
    config:
      uri: http://localhost:8888  # Config server URI
      label: master
      name: config-repo

২. Spring Cloud Netflix Eureka (Service Discovery)

কাজ: সার্ভিস ডিসকভারি

ডিপেন্ডেন্সি:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

কনফিগারেশন (application.yml):

spring:
  application:
    name: eureka-server
  cloud:
    eureka:
      client:
        fetch-registry: false
        register-with-eureka: false
      server:
        enable-self-preservation: false

Eureka সার্ভার চালু করতে, @EnableEurekaServer ব্যবহার করুন:

@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

৩. Spring Cloud Netflix Ribbon (Client-Side Load Balancing)

কাজ: ক্লায়েন্ট সাইড লোড ব্যালান্সিং

ডিপেন্ডেন্সি:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>

কনফিগারেশন (application.yml):

spring:
  cloud:
    loadbalancer:
      ribbon:
        enabled: true

Ribbon ব্যবহার:

@Bean
public RestTemplate restTemplate() {
    return new RestTemplate();
}

@LoadBalanced ব্যবহার করলে Ribbon-এর লোড ব্যালান্সিং সিস্টেম অটোমেটিকালি সক্রিয় হয়ে যাবে।


৪. Spring Cloud Netflix Zuul (API Gateway)

কাজ: API গেটওয়ে ও রিভার্স প্রোক্সি

ডিপেন্ডেন্সি:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>

কনফিগারেশন (application.yml):

zuul:
  routes:
    service1:
      path: /service1/**
      url: http://localhost:8081
    service2:
      path: /service2/**
      url: http://localhost:8082

Zuul-এ গেটওয়ে সক্ষম করতে:

@EnableZuulProxy
@SpringBootApplication
public class ApiGatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(ApiGatewayApplication.class, args);
    }
}

৫. Spring Cloud Gateway (API Gateway)

কাজ: মডার্ন API গেটওয়ে এবং রাউটিং

ডিপেন্ডেন্সি:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

কনফিগারেশন (application.yml):

spring:
  cloud:
    gateway:
      routes:
        - id: service1
          uri: http://localhost:8081
          predicates:
            - Path=/service1/**
        - id: service2
          uri: http://localhost:8082
          predicates:
            - Path=/service2/**

৬. Spring Cloud Stream (Event-Driven Microservices)

কাজ: ইভেন্ট-ভিত্তিক আর্কিটেকচার

ডিপেন্ডেন্সি:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-stream-kafka</artifactId>
</dependency>

কনফিগারেশন (application.yml):

spring:
  cloud:
    stream:
      bindings:
        output:
          destination: myTopic
          content-type: application/json
      kafka:
        binder:
          brokers: localhost:9092

৭. Spring Cloud Sleuth (Distributed Tracing)

কাজ: সার্ভিস কল ট্রেসিং

ডিপেন্ডেন্সি:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>

কনফিগারেশন (application.yml):

spring:
  cloud:
    sleuth:
      sampler:
        probability: 1.0  # 100% sampling

৮. Spring Cloud Hystrix (Circuit Breaker)

কাজ: সার্ভিস ফেইলিউর হ্যান্ডলিং এবং Circuit Breaker প্যাটার্ন

ডিপেন্ডেন্সি:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

কনফিগারেশন (application.yml):

hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 1000  # Timeout for commands

Hystrix এর ব্যবহার:

@HystrixCommand(fallbackMethod = "fallbackMethod")
public String getServiceData() {
    // service call
}

public String fallbackMethod() {
    return "Fallback response due to failure";
}

৯. Spring Cloud Bus

কাজ: ডিস্ট্রিবিউটেড সিস্টেমে কনফিগারেশন ও ইভেন্ট শেয়ারিং

ডিপেন্ডেন্সি:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus</artifactId>
</dependency>

কনফিগারেশন:

spring:
  cloud:
    bus:
      enabled: true
    stream:
      bindings:
        output:
          destination: myTopic

১০. Spring Cloud Security (Authentication and Authorization)

কাজ: সার্ভিস সিকিউরিটি

ডিপেন্ডেন্সি:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-oauth2</artifactId>
</dependency>

কনফিগারেশন:

spring:
  security:
    oauth2:
      client:
        registration:
          google:
            client-id: <your-client-id>
            client-secret: <your-client-secret>
            scope: profile, email
            redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"

সারাংশ:

স্প্রিং ক্লাউড ব্যবহারের জন্য সাধারণত এই ডিপেন্ডেন্সি ও কনফিগারেশনগুলি প্রয়োজন:

  1. Config Server: কনফিগারেশন ব্যবস্থাপনা।
  2. Eureka Server: সার্ভিস ডিসকভারি।
  3. Ribbon: ক্লায়েন্ট সাইড লোড ব্যালান্সিং।
  4. Zuul/Gateway: API গেটওয়ে এবং রাউটিং।
  5. Stream: ইভেন্ট ড্রিভেন কমিউনিকেশন।
  6. Hystrix: Circuit Breaker প্যাটার্ন।
  7. Sleuth: ডিস্ট্রিবিউটেড ট্রেসিং।
  8. Security: সিকিউরিটি এবং অথেনটিকেশন।

এই ডিপেন্ডেন্সি ও কনফিগারেশন গুলি স্প্রিং ক্লাউডের বিভিন্ন ফিচারগুলো সঠিকভাবে কাজ করতে সাহায্য করবে, এবং মাইক্রোসার্ভিস আর্কিটেকচার তৈরি করতে সহায়ক হবে।

Content added By
Promotion

Are you sure to start over?

Loading...